const mongoose = require('mongoose');

// 反馈表
const feedbackSchema = new mongoose.Schema({
    // 反馈标题
    title: {
        type: String,
        required: true,
        trim: true,
        maxlength: 200
    },
    // 反馈内容
    content: {
        type: String,
        required: true
    },
    // 反馈类型
    type: {
        type: String,
        enum: ['投诉', '建议', '表扬', '咨询', '其他'],
        default: '建议'
    },
    // 反馈人姓名
    userName: {
        type: String,
        required: true,
        trim: true
    },
    // 联系电话
    phone: {
        type: String,
        validate: {
            validator: function(v) {
                return !v || /^1[3-9]\d{9}$/.test(v);
            },
            message: '手机号格式不正确'
        }
    },
    // 联系邮箱
    email: {
        type: String,
        validate: {
            validator: function(v) {
                return !v || /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v);
            },
            message: '邮箱格式不正确'
        }
    },
    // 反馈科室
    department: {
        type: String,
        default: ''
    },
    // 相关医生
    doctor: {
        type: String,
        default: ''
    },
    // 紧急程度
    priority: {
        type: String,
        enum: ['low', 'normal', 'high', 'urgent'],
        default: 'normal'
    },
    // 处理状态
    status: {
        type: String,
        enum: ['pending', 'processing', 'resolved', 'closed'],
        default: 'pending'
    },
    // 处理人
    handler: {
        type: String,
        default: ''
    },
    // 处理结果
    result: {
        type: String,
        default: ''
    },
    // 处理时间
    handleTime: {
        type: Date
    },
    // 反馈图片
    images: [{
        type: String
    }],
    // 评分（1-5星）
    rating: {
        type: Number,
        min: 1,
        max: 5,
        default: 5
    },
    // 创建时间
    createTime: {
        type: Date,
        default: Date.now
    },
    // 更新时间
    updateTime: {
        type: Date,
        default: Date.now
    }
}, {
    timestamps: true,
    collection: 'feedbacks'
});

// 更新时间中间件
feedbackSchema.pre('save', function(next) {
    this.updateTime = new Date();
    next();
});

module.exports = mongoose.model('Feedback', feedbackSchema); 